﻿Imports FairShop.Helpers
Imports System.ComponentModel

Namespace Controls

    Public Class ArtikelControl

        Private _idArtikel As Integer = 0
        Private _aandachtFont As Font

        <Browsable(False)> _
        Public Property IdArtikel() As Integer
            Get
                Return _idArtikel
            End Get
            Set(ByVal value As Integer)
                _idArtikel = value
                ArtikelsBindingSource.Filter = String.Format("ID = {0}", value)
                If (value = 0) Then Clear()
            End Set
        End Property

        Public Sub New()
            InitializeComponent()
            Clear()
            If Not Utility.DesignMode Then
                ArtikelsDataSet1.Merge(Utility.Data)
                ArtikelsBindingSource.Filter = "ID = 0"
                _aandachtFont = New Font(Me.Font, FontStyle.Bold)
                Me.LabelSamengesteld1.Font = _aandachtFont
            End If
        End Sub

#Region "Events"

        Private Sub ArtikelsBindingSource_CurrentChanged(ByVal sender As Object, ByVal e As EventArgs) Handles ArtikelsBindingSource.CurrentChanged
            If (ArtikelsBindingSource.Current Is Nothing) Then
                Clear()
            Else
                Dim artikelRow As ArtikelsDataSet.ArtikelsRow = DirectCast(DirectCast(ArtikelsBindingSource.Current, DataRowView).Row, ArtikelsDataSet.ArtikelsRow)
                Dim artikel As ArtikelsDataSet.ArtikelsRow = Utility.Data.Artikels.FindById(artikelRow.Id)
                Me.LeverancierLabel1.Text = Utility.Data.Leveranciers.FindById(artikel.IdLeverancier).Naam
                Dim categorie As String = Utility.Data.Categorieen.FindById(artikel.IdCategorie).CategorieEnSubcategorie
                Me.CategorieLabel1.Text = categorie
                Me.ToolTip1.SetToolTip(CategorieLabel1, categorie)
                SetLabelCount(LabelVerkopen1, artikel.GetVerkoopsDetailsRows.Count)
                SetLabelCount(LabelLeveringen1, artikel.GetLeveringDetailsRows.Count)
                SetLabelCount(LabelVoorraadbewegingen1, artikel.GetVoorraadbewegingenRows.Count)
                Me.LabelSamengesteld1.Text = If(Utility.DeelartikelIds.Contains(artikel.Id), "Ja", String.Empty)

                ' Data die kan wijzigen niet via databinding maar in code
                ' Current is niet de gewijzigde versie
                Me.LabelVerkoopbaar1.Text = If(artikel.Verkoopbaar, "Ja", "Neen")
                Me.VerwachteVoorraadLabel1.Text = artikel.VerwachteVoorraad.ToString()

                SetLabelAandacht(Me.LeverancierLabel1, artikel.IdLeverancier = Constants.DEFAULT_LEVERANCIER_ID)
                SetLabelAandacht(Me.CategorieLabel1, artikel.IdCategorie = Constants.DEFAULT_CATEGORIE_ID)
            End If
        End Sub

#End Region

#Region "Public methods"

        Public Sub SetLabelAandacht(ByVal label As Label, ByVal aandacht As Boolean)
            If (aandacht) Then
                label.Font = _aandachtFont
                label.ForeColor = Color.OrangeRed
            Else
                label.Font = Me.Font
                label.ForeColor = Color.Black
            End If
        End Sub

#End Region

#Region "Private methods"

        Private Sub Clear()
            For Each ctrl As Label In Me.Controls.OfType(Of Label)()
                ctrl.Text = String.Empty
            Next
            Me.ToolTip1.SetToolTip(CategorieLabel1, String.Empty)
        End Sub

        Private Sub SetLabelCount(ByVal label As Label, ByVal aantal As Integer)
            label.Text = aantal.ToString
            If (aantal > 0) Then
                label.Font = _aandachtFont
            Else
                label.Font = Me.Font
            End If
        End Sub

#End Region

    End Class

End Namespace
